# 构造测试数据
import json


def build_data():
    # 指定JSON文件路径
    json_file = (r'C:\data\login_data.json')

    # 初始化空列表，用于存储转换后的测试数据
    test_data = []

    # 打开并读取JSON文件
    with open(json_file) as f:
        # f指的是一个文件对象(file object)
        # 读取全部内容
        # f.read()
        # 读取单行
        # f.readline()
        # 读取所有行返回列表
        # f.readlines()
        # 写入内容(需以写入模式打开)
        # f.write(text)
        # 检查文件是否已关闭
        # f.closed
        json_data = json.load(f)
        # 从每个用例中提取各个字段
        for case_data in json_data:
            username = case_data.get('username')
            password = case_data.get('password')
            verify_code = case_data.get('verify_code')
            status_code = case_data.get('status_code')
            content_type = case_data.get('content_type')
            status = case_data.get('status')
            msg = case_data.get('msg')
            # 将提取的数据打包成元组，添加到测试数据列表
            # append()的基本作用是将元素添加到列表末尾
            # 内层括号相当于创建一个元组(tuple)用于打包多个字段
            # 这里的test_data仍未改变依旧是列表，只是它的元素改变为元组
            # 最终的数据结构是test_data = [
            #                           (元素1, 元素2) # 这是元组(列表的第一个元素)
            #                           (元素3, 元素4) # 这也是元组(列表的第二个元素)
            # ]
            test_data.append((username, password, verify_code, status_code, content_type, status, msg))
            # 打印当前加载的测试数据(调试用)
            # {}是一个占位符表示这里将被实际值代替，固定文本"test_data = "会原样输出
            # .format()字符串对象的格式化方法，将format()的参数填充到{}的位置
            print("test_data = {} ".format((username, password, verify_code, status_code, content_type, status, msg)))
        # 返回最终的测试数据列表
        return test_data

